package com.example.demo.tlwbus;


import org.springframework.http.ResponseEntity;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
import java.util.List;

public interface IBusSocketService {
    /**
     * 建立与服务端的连接
     *
     * @param list
     * @return
     */
    void openWithServer(List<BusNetworkStatus> list);

    /**
     * 修改socket
     *
     * @param baseDTOResponseEntity
     */
    void updateSocket(ResponseEntity<BaseDTO> baseDTOResponseEntity);

    /**
     * 清除连接池
     *
     * @param ids
     * @return
     */
    Boolean removeByIds(List<String> ids);

    /**
     * 有消息时 需要将网络，数据的状态修改为成功，记录更新时间，如果之前的状态有故障的还需要记录恢复时间。
     * 当服务端断开时：
     * 需要将网络和数据的状态修改为故障，如果之前的状态都是成功的，还需要记录故障时间，
     */
    Boolean readMsg(BusSocketDTO busSocketDTO, SelectionKey selectionKey);

    /**
     * 监听消息
     * 有消息时 需要将网络，数据的状态修改为成功，记录更新时间，如果之前的状态有故障的还需要记录恢复时间。
     * 当服务端断开时：
     * 需要将网络和数据的状态修改为故障，如果之前的状态都是成功的，还需要记录故障时间，
     * 断开连接，清除线程池，结束监听
     * * @param busSocketDTO
     */
    void listen(BusSocketDTO busSocketDTO);

    /**
     * 删除链接
     *
     * @param selector
     */
    void removeSelector(Selector selector);
}
